Discrete (lumped-parameter) spring, viscous damper, and point mass elements for 2D and 3D structural analyses.
Spring and damper elements connect two nodes and act along a single unit axis . By default, the axis runs from node 1 to node 2; however, a user-defined axis may be supplied, which permits zero-length (coincident node) elements. Defining the global spring stiffness and damper damping matrices are
The point mass element is attached to a single node and contributes a translational mass matrix
Each element carries only translational degrees of freedom (x and y in 2D; x, y, and z in 3D). When assembled against nodes carrying additional degrees of freedom (e.g. beam nodes), the element degrees of freedom map onto the leading translational degrees of freedom of each node.
Assembles a dense global damping matrix from a collection of discrete elements.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int32), | intent(in) | :: | gdof |
The total number of global degrees of freedom. |
||
| class(discrete_element), | intent(in), | dimension(:) | :: | elements |
The discrete elements to assemble. |
|
| class(node), | intent(in), | dimension(:) | :: | nodes |
The global node list. |
|
| real(kind=real64), | intent(out), | allocatable, dimension(:,:) | :: | c |
The assembled gdof-by-gdof global damping matrix. |
Assembles a global damping matrix, in CSR format, from a collection of discrete elements.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int32), | intent(in) | :: | gdof |
The total number of global degrees of freedom. |
||
| class(discrete_element), | intent(in), | dimension(:) | :: | elements |
The discrete elements to assemble. |
|
| class(node), | intent(in), | dimension(:) | :: | nodes |
The global node list. |
|
| type(csr_matrix), | intent(out) | :: | c |
The assembled gdof-by-gdof global damping matrix in CSR format. |
Assembles the dense global mass, damping, and stiffness matrices of a system composed of discrete elements. The mass, damping, and stiffness contributions of every element in each collection are assembled; therefore, any discrete element type may be supplied in any collection. A zero-sized array may be supplied for any collection that is not required.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int32), | intent(in) | :: | gdof |
The total number of global degrees of freedom. |
||
| class(discrete_element), | intent(in), | dimension(:) | :: | masses |
The mass elements to assemble. |
|
| class(discrete_element), | intent(in), | dimension(:) | :: | dampers |
The damper elements to assemble. |
|
| class(discrete_element), | intent(in), | dimension(:) | :: | springs |
The spring elements to assemble. |
|
| class(node), | intent(in), | dimension(:) | :: | nodes |
The global node list. |
|
| real(kind=real64), | intent(out), | allocatable, dimension(:,:) | :: | m |
The assembled gdof-by-gdof global mass matrix. |
|
| real(kind=real64), | intent(out), | allocatable, dimension(:,:) | :: | c |
The assembled gdof-by-gdof global damping matrix. |
|
| real(kind=real64), | intent(out), | allocatable, dimension(:,:) | :: | k |
The assembled gdof-by-gdof global stiffness matrix. |
Assembles the global mass, damping, and stiffness matrices, in CSR format, of a system composed of discrete elements. The mass, damping, and stiffness contributions of every element in each collection are assembled; therefore, any discrete element type may be supplied in any collection. A zero-sized array may be supplied for any collection that is not required.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int32), | intent(in) | :: | gdof |
The total number of global degrees of freedom. |
||
| class(discrete_element), | intent(in), | dimension(:) | :: | masses |
The mass elements to assemble. |
|
| class(discrete_element), | intent(in), | dimension(:) | :: | dampers |
The damper elements to assemble. |
|
| class(discrete_element), | intent(in), | dimension(:) | :: | springs |
The spring elements to assemble. |
|
| class(node), | intent(in), | dimension(:) | :: | nodes |
The global node list. |
|
| type(csr_matrix), | intent(out) | :: | m |
The assembled gdof-by-gdof global mass matrix in CSR format. |
||
| type(csr_matrix), | intent(out) | :: | c |
The assembled gdof-by-gdof global damping matrix in CSR format. |
||
| type(csr_matrix), | intent(out) | :: | k |
The assembled gdof-by-gdof global stiffness matrix in CSR format. |
Initializes a new [[damper_element_2d]].
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=real64), | intent(in) | :: | c |
The viscous damping coefficient. |
||
| class(node), | intent(in) | :: | nd1 |
The first node of the element. |
||
| class(node), | intent(in) | :: | nd2 |
The second node of the element. |
||
| real(kind=real64), | intent(in), | optional, | dimension(:) | :: | direction |
An optional 2-element vector defining the damper axis. The vector must be non-zero and is normalized internally. If not supplied, the axis is defined by the vector from node 1 to node 2, in which case the nodes must not be coincident. |
The new [[damper_element_2d]].
Initializes a new [[damper_element_3d]].
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=real64), | intent(in) | :: | c |
The viscous damping coefficient. |
||
| class(node), | intent(in) | :: | nd1 |
The first node of the element. |
||
| class(node), | intent(in) | :: | nd2 |
The second node of the element. |
||
| real(kind=real64), | intent(in), | optional, | dimension(:) | :: | direction |
An optional 3-element vector defining the damper axis. The vector must be non-zero and is normalized internally. If not supplied, the axis is defined by the vector from node 1 to node 2, in which case the nodes must not be coincident. |
The new [[damper_element_3d]].
Initializes a new [[mass_element_2d]].
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=real64), | intent(in) | :: | m |
The mass. |
||
| class(node), | intent(in) | :: | nd |
The node to which the mass is attached. |
The new [[mass_element_2d]].
Initializes a new [[mass_element_3d]].
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=real64), | intent(in) | :: | m |
The mass. |
||
| class(node), | intent(in) | :: | nd |
The node to which the mass is attached. |
The new [[mass_element_3d]].
Initializes a new [[spring_element_2d]].
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=real64), | intent(in) | :: | k |
The spring stiffness. |
||
| class(node), | intent(in) | :: | nd1 |
The first node of the element. |
||
| class(node), | intent(in) | :: | nd2 |
The second node of the element. |
||
| real(kind=real64), | intent(in), | optional, | dimension(:) | :: | direction |
An optional 2-element vector defining the spring axis. The vector must be non-zero and is normalized internally. If not supplied, the axis is defined by the vector from node 1 to node 2, in which case the nodes must not be coincident. |
The new [[spring_element_2d]].
Initializes a new [[spring_element_3d]].
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=real64), | intent(in) | :: | k |
The spring stiffness. |
||
| class(node), | intent(in) | :: | nd1 |
The first node of the element. |
||
| class(node), | intent(in) | :: | nd2 |
The second node of the element. |
||
| real(kind=real64), | intent(in), | optional, | dimension(:) | :: | direction |
An optional 3-element vector defining the spring axis. The vector must be non-zero and is normalized internally. If not supplied, the axis is defined by the vector from node 1 to node 2, in which case the nodes must not be coincident. |
The new [[spring_element_3d]].
Defines a linear, axial viscous damper element. When evaluated with nodal velocities, the element "strain" is the elongation rate and the element "stress" is the damper force (positive in tension).
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=real64), | public | :: | damping_coefficient |
The viscous damping coefficient. |
|||
| real(kind=real64), | public, | dimension(3) | :: | direction | = | 0.0d0 |
The unit vector defining the user-supplied element axis. Only the leading components corresponding to the element dimensionality are used. This value is used only if use_direction is true. |
| type(material), | public | :: | material |
The material. |
|||
| type(node), | public | :: | node_1 |
The first node of the element (s = -1). |
|||
| type(node), | public | :: | node_2 |
The second node of the element (s = 1). |
|||
| logical, | public | :: | use_direction | = | .false. |
True if the element axis is defined by direction; else, false if the axis is defined by the vector from node 1 to node 2. |
| procedure , public :: axis => tnde_axis Function | |
| procedure , public :: constitutive_matrix => dp_constitutive_matrix Function | |
| procedure , public :: damping_matrix => dp_damping_matrix Function | |
| procedure , public :: evaluate_shape_function => tnde_shape_function Function | |
| procedure , public :: external_force_vector => de_ext_force_vector Function | |
| procedure (element_query) , public , pass :: get_dimensionality | |
| procedure , public :: get_dof_per_node => tnde_dof_per_node Function | |
| procedure , public :: get_node => tnde_get_node Function | |
| procedure , public :: get_node_count => tnde_get_node_count Function | |
| procedure , public :: get_node_natural_coordinates => de_get_node_natural_coordinates Function | |
| procedure , public :: jacobian => de_jacobian Function | |
| procedure , public :: mass_matrix => de_mass_matrix Function | |
| procedure , public :: shape_function_matrix => tnde_shape_function_matrix Function | |
| procedure , public :: stiffness_matrix => de_stiffness_matrix Function | |
| procedure , public :: strain => e_strain Function | |
| procedure , public :: strain_displacement_matrix => tnde_strain_disp_matrix Function | |
| procedure , public :: stress => e_stress Function |
Defines a 2D linear, axial viscous damper element with x and y translations at each node.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=real64), | public | :: | damping_coefficient |
The viscous damping coefficient. |
|||
| real(kind=real64), | public, | dimension(3) | :: | direction | = | 0.0d0 |
The unit vector defining the user-supplied element axis. Only the leading components corresponding to the element dimensionality are used. This value is used only if use_direction is true. |
| type(material), | public | :: | material |
The material. |
|||
| type(node), | public | :: | node_1 |
The first node of the element (s = -1). |
|||
| type(node), | public | :: | node_2 |
The second node of the element (s = 1). |
|||
| logical, | public | :: | use_direction | = | .false. |
True if the element axis is defined by direction; else, false if the axis is defined by the vector from node 1 to node 2. |
| private pure function dp2d_init (c, nd1, nd2, direction) | Initializes a new [[damper_element_2d]]. |
| procedure , public :: axis => tnde_axis Function | |
| procedure , public :: constitutive_matrix => dp_constitutive_matrix Function | |
| procedure , public :: damping_matrix => dp_damping_matrix Function | |
| procedure , public :: evaluate_shape_function => tnde_shape_function Function | |
| procedure , public :: external_force_vector => de_ext_force_vector Function | |
| procedure , public :: get_dimensionality => dp2d_dimensionality Function | |
| procedure , public :: get_dof_per_node => tnde_dof_per_node Function | |
| procedure , public :: get_node => tnde_get_node Function | |
| procedure , public :: get_node_count => tnde_get_node_count Function | |
| procedure , public :: get_node_natural_coordinates => de_get_node_natural_coordinates Function | |
| procedure , public :: jacobian => de_jacobian Function | |
| procedure , public :: mass_matrix => de_mass_matrix Function | |
| procedure , public :: shape_function_matrix => tnde_shape_function_matrix Function | |
| procedure , public :: stiffness_matrix => de_stiffness_matrix Function | |
| procedure , public :: strain => e_strain Function | |
| procedure , public :: strain_displacement_matrix => tnde_strain_disp_matrix Function | |
| procedure , public :: stress => e_stress Function |
Defines a 3D linear, axial viscous damper element with x, y, and z translations at each node.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=real64), | public | :: | damping_coefficient |
The viscous damping coefficient. |
|||
| real(kind=real64), | public, | dimension(3) | :: | direction | = | 0.0d0 |
The unit vector defining the user-supplied element axis. Only the leading components corresponding to the element dimensionality are used. This value is used only if use_direction is true. |
| type(material), | public | :: | material |
The material. |
|||
| type(node), | public | :: | node_1 |
The first node of the element (s = -1). |
|||
| type(node), | public | :: | node_2 |
The second node of the element (s = 1). |
|||
| logical, | public | :: | use_direction | = | .false. |
True if the element axis is defined by direction; else, false if the axis is defined by the vector from node 1 to node 2. |
| private pure function dp3d_init (c, nd1, nd2, direction) | Initializes a new [[damper_element_3d]]. |
| procedure , public :: axis => tnde_axis Function | |
| procedure , public :: constitutive_matrix => dp_constitutive_matrix Function | |
| procedure , public :: damping_matrix => dp_damping_matrix Function | |
| procedure , public :: evaluate_shape_function => tnde_shape_function Function | |
| procedure , public :: external_force_vector => de_ext_force_vector Function | |
| procedure , public :: get_dimensionality => dp3d_dimensionality Function | |
| procedure , public :: get_dof_per_node => tnde_dof_per_node Function | |
| procedure , public :: get_node => tnde_get_node Function | |
| procedure , public :: get_node_count => tnde_get_node_count Function | |
| procedure , public :: get_node_natural_coordinates => de_get_node_natural_coordinates Function | |
| procedure , public :: jacobian => de_jacobian Function | |
| procedure , public :: mass_matrix => de_mass_matrix Function | |
| procedure , public :: shape_function_matrix => tnde_shape_function_matrix Function | |
| procedure , public :: stiffness_matrix => de_stiffness_matrix Function | |
| procedure , public :: strain => e_strain Function | |
| procedure , public :: strain_displacement_matrix => tnde_strain_disp_matrix Function | |
| procedure , public :: stress => e_stress Function |
Defines a discrete (lumped-parameter) element. Discrete elements have no spatial extent; therefore, the stiffness, mass, and damping matrices default to zero and are overridden only where the element contributes to the system. The inherited material is unused.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(material), | public | :: | material |
The material. |
| procedure (element_const_matrix_function) , public , pass :: constitutive_matrix | |
| procedure , public :: damping_matrix => de_damping_matrix Function | |
| procedure (element_shape_function) , public , pass :: evaluate_shape_function | |
| procedure , public :: external_force_vector => de_ext_force_vector Function | |
| procedure (element_query) , public , pass :: get_dimensionality | |
| procedure (element_query) , public , pass :: get_dof_per_node | |
| procedure (element_get_node) , public , pass :: get_node | |
| procedure (element_query) , public , pass :: get_node_count | |
| procedure , public :: get_node_natural_coordinates => de_get_node_natural_coordinates Function | |
| procedure , public :: jacobian => de_jacobian Function | |
| procedure , public :: mass_matrix => de_mass_matrix Function | |
| procedure (element_matrix_function) , public , pass :: shape_function_matrix | |
| procedure , public :: stiffness_matrix => de_stiffness_matrix Function | |
| procedure , public :: strain => e_strain Function | |
| procedure (element_matrix_function) , public , pass :: strain_displacement_matrix | |
| procedure , public :: stress => e_stress Function |
Defines a translational point mass element attached to a single node.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=real64), | public | :: | mass |
The mass. |
|||
| type(material), | public | :: | material |
The material. |
|||
| type(node), | public | :: | node_1 |
The node to which the mass is attached. |
| procedure , public :: constitutive_matrix => me_constitutive_matrix Function | |
| procedure , public :: damping_matrix => de_damping_matrix Function | |
| procedure , public :: evaluate_shape_function => me_shape_function Function | |
| procedure , public :: external_force_vector => de_ext_force_vector Function | |
| procedure (element_query) , public , pass :: get_dimensionality | |
| procedure , public :: get_dof_per_node => me_dof_per_node Function | |
| procedure , public :: get_node => me_get_node Function | |
| procedure , public :: get_node_count => me_get_node_count Function | |
| procedure , public :: get_node_natural_coordinates => de_get_node_natural_coordinates Function | |
| procedure , public :: jacobian => de_jacobian Function | |
| procedure , public :: mass_matrix => me_mass_matrix Function | |
| procedure , public :: shape_function_matrix => me_shape_function_matrix Function | |
| procedure , public :: stiffness_matrix => de_stiffness_matrix Function | |
| procedure , public :: strain => e_strain Function | |
| procedure , public :: strain_displacement_matrix => me_strain_disp_matrix Function | |
| procedure , public :: stress => e_stress Function |
Defines a 2D translational point mass element with x and y translations.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=real64), | public | :: | mass |
The mass. |
|||
| type(material), | public | :: | material |
The material. |
|||
| type(node), | public | :: | node_1 |
The node to which the mass is attached. |
| private pure function me2d_init (m, nd) | Initializes a new [[mass_element_2d]]. |
| procedure , public :: constitutive_matrix => me_constitutive_matrix Function | |
| procedure , public :: damping_matrix => de_damping_matrix Function | |
| procedure , public :: evaluate_shape_function => me_shape_function Function | |
| procedure , public :: external_force_vector => de_ext_force_vector Function | |
| procedure , public :: get_dimensionality => me2d_dimensionality Function | |
| procedure , public :: get_dof_per_node => me_dof_per_node Function | |
| procedure , public :: get_node => me_get_node Function | |
| procedure , public :: get_node_count => me_get_node_count Function | |
| procedure , public :: get_node_natural_coordinates => de_get_node_natural_coordinates Function | |
| procedure , public :: jacobian => de_jacobian Function | |
| procedure , public :: mass_matrix => me_mass_matrix Function | |
| procedure , public :: shape_function_matrix => me_shape_function_matrix Function | |
| procedure , public :: stiffness_matrix => de_stiffness_matrix Function | |
| procedure , public :: strain => e_strain Function | |
| procedure , public :: strain_displacement_matrix => me_strain_disp_matrix Function | |
| procedure , public :: stress => e_stress Function |
Defines a 3D translational point mass element with x, y, and z translations.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=real64), | public | :: | mass |
The mass. |
|||
| type(material), | public | :: | material |
The material. |
|||
| type(node), | public | :: | node_1 |
The node to which the mass is attached. |
| private pure function me3d_init (m, nd) | Initializes a new [[mass_element_3d]]. |
| procedure , public :: constitutive_matrix => me_constitutive_matrix Function | |
| procedure , public :: damping_matrix => de_damping_matrix Function | |
| procedure , public :: evaluate_shape_function => me_shape_function Function | |
| procedure , public :: external_force_vector => de_ext_force_vector Function | |
| procedure , public :: get_dimensionality => me3d_dimensionality Function | |
| procedure , public :: get_dof_per_node => me_dof_per_node Function | |
| procedure , public :: get_node => me_get_node Function | |
| procedure , public :: get_node_count => me_get_node_count Function | |
| procedure , public :: get_node_natural_coordinates => de_get_node_natural_coordinates Function | |
| procedure , public :: jacobian => de_jacobian Function | |
| procedure , public :: mass_matrix => me_mass_matrix Function | |
| procedure , public :: shape_function_matrix => me_shape_function_matrix Function | |
| procedure , public :: stiffness_matrix => de_stiffness_matrix Function | |
| procedure , public :: strain => e_strain Function | |
| procedure , public :: strain_displacement_matrix => me_strain_disp_matrix Function | |
| procedure , public :: stress => e_stress Function |
Defines a linear, axial spring element. The element "strain" is the spring elongation and the element "stress" is the spring force (positive in tension).
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=real64), | public, | dimension(3) | :: | direction | = | 0.0d0 |
The unit vector defining the user-supplied element axis. Only the leading components corresponding to the element dimensionality are used. This value is used only if use_direction is true. |
| type(material), | public | :: | material |
The material. |
|||
| type(node), | public | :: | node_1 |
The first node of the element (s = -1). |
|||
| type(node), | public | :: | node_2 |
The second node of the element (s = 1). |
|||
| real(kind=real64), | public | :: | stiffness |
The spring stiffness. |
|||
| logical, | public | :: | use_direction | = | .false. |
True if the element axis is defined by direction; else, false if the axis is defined by the vector from node 1 to node 2. |
| procedure , public :: axis => tnde_axis Function | |
| procedure , public :: constitutive_matrix => se_constitutive_matrix Function | |
| procedure , public :: damping_matrix => de_damping_matrix Function | |
| procedure , public :: evaluate_shape_function => tnde_shape_function Function | |
| procedure , public :: external_force_vector => de_ext_force_vector Function | |
| procedure (element_query) , public , pass :: get_dimensionality | |
| procedure , public :: get_dof_per_node => tnde_dof_per_node Function | |
| procedure , public :: get_node => tnde_get_node Function | |
| procedure , public :: get_node_count => tnde_get_node_count Function | |
| procedure , public :: get_node_natural_coordinates => de_get_node_natural_coordinates Function | |
| procedure , public :: jacobian => de_jacobian Function | |
| procedure , public :: mass_matrix => de_mass_matrix Function | |
| procedure , public :: shape_function_matrix => tnde_shape_function_matrix Function | |
| procedure , public :: stiffness_matrix => se_stiffness_matrix Function | |
| procedure , public :: strain => e_strain Function | |
| procedure , public :: strain_displacement_matrix => tnde_strain_disp_matrix Function | |
| procedure , public :: stress => e_stress Function |
Defines a 2D linear, axial spring element with x and y translations at each node.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=real64), | public, | dimension(3) | :: | direction | = | 0.0d0 |
The unit vector defining the user-supplied element axis. Only the leading components corresponding to the element dimensionality are used. This value is used only if use_direction is true. |
| type(material), | public | :: | material |
The material. |
|||
| type(node), | public | :: | node_1 |
The first node of the element (s = -1). |
|||
| type(node), | public | :: | node_2 |
The second node of the element (s = 1). |
|||
| real(kind=real64), | public | :: | stiffness |
The spring stiffness. |
|||
| logical, | public | :: | use_direction | = | .false. |
True if the element axis is defined by direction; else, false if the axis is defined by the vector from node 1 to node 2. |
| private pure function se2d_init (k, nd1, nd2, direction) | Initializes a new [[spring_element_2d]]. |
| procedure , public :: axis => tnde_axis Function | |
| procedure , public :: constitutive_matrix => se_constitutive_matrix Function | |
| procedure , public :: damping_matrix => de_damping_matrix Function | |
| procedure , public :: evaluate_shape_function => tnde_shape_function Function | |
| procedure , public :: external_force_vector => de_ext_force_vector Function | |
| procedure , public :: get_dimensionality => se2d_dimensionality Function | |
| procedure , public :: get_dof_per_node => tnde_dof_per_node Function | |
| procedure , public :: get_node => tnde_get_node Function | |
| procedure , public :: get_node_count => tnde_get_node_count Function | |
| procedure , public :: get_node_natural_coordinates => de_get_node_natural_coordinates Function | |
| procedure , public :: jacobian => de_jacobian Function | |
| procedure , public :: mass_matrix => de_mass_matrix Function | |
| procedure , public :: shape_function_matrix => tnde_shape_function_matrix Function | |
| procedure , public :: stiffness_matrix => se_stiffness_matrix Function | |
| procedure , public :: strain => e_strain Function | |
| procedure , public :: strain_displacement_matrix => tnde_strain_disp_matrix Function | |
| procedure , public :: stress => e_stress Function |
Defines a 3D linear, axial spring element with x, y, and z translations at each node.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=real64), | public, | dimension(3) | :: | direction | = | 0.0d0 |
The unit vector defining the user-supplied element axis. Only the leading components corresponding to the element dimensionality are used. This value is used only if use_direction is true. |
| type(material), | public | :: | material |
The material. |
|||
| type(node), | public | :: | node_1 |
The first node of the element (s = -1). |
|||
| type(node), | public | :: | node_2 |
The second node of the element (s = 1). |
|||
| real(kind=real64), | public | :: | stiffness |
The spring stiffness. |
|||
| logical, | public | :: | use_direction | = | .false. |
True if the element axis is defined by direction; else, false if the axis is defined by the vector from node 1 to node 2. |
| private pure function se3d_init (k, nd1, nd2, direction) | Initializes a new [[spring_element_3d]]. |
| procedure , public :: axis => tnde_axis Function | |
| procedure , public :: constitutive_matrix => se_constitutive_matrix Function | |
| procedure , public :: damping_matrix => de_damping_matrix Function | |
| procedure , public :: evaluate_shape_function => tnde_shape_function Function | |
| procedure , public :: external_force_vector => de_ext_force_vector Function | |
| procedure , public :: get_dimensionality => se3d_dimensionality Function | |
| procedure , public :: get_dof_per_node => tnde_dof_per_node Function | |
| procedure , public :: get_node => tnde_get_node Function | |
| procedure , public :: get_node_count => tnde_get_node_count Function | |
| procedure , public :: get_node_natural_coordinates => de_get_node_natural_coordinates Function | |
| procedure , public :: jacobian => de_jacobian Function | |
| procedure , public :: mass_matrix => de_mass_matrix Function | |
| procedure , public :: shape_function_matrix => tnde_shape_function_matrix Function | |
| procedure , public :: stiffness_matrix => se_stiffness_matrix Function | |
| procedure , public :: strain => e_strain Function | |
| procedure , public :: strain_displacement_matrix => tnde_strain_disp_matrix Function | |
| procedure , public :: stress => e_stress Function |
Defines a discrete element that connects two nodes and acts along a single axis.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=real64), | public, | dimension(3) | :: | direction | = | 0.0d0 |
The unit vector defining the user-supplied element axis. Only the leading components corresponding to the element dimensionality are used. This value is used only if use_direction is true. |
| type(material), | public | :: | material |
The material. |
|||
| type(node), | public | :: | node_1 |
The first node of the element (s = -1). |
|||
| type(node), | public | :: | node_2 |
The second node of the element (s = 1). |
|||
| logical, | public | :: | use_direction | = | .false. |
True if the element axis is defined by direction; else, false if the axis is defined by the vector from node 1 to node 2. |
| procedure , public :: axis => tnde_axis Function | |
| procedure (element_const_matrix_function) , public , pass :: constitutive_matrix | |
| procedure , public :: damping_matrix => de_damping_matrix Function | |
| procedure , public :: evaluate_shape_function => tnde_shape_function Function | |
| procedure , public :: external_force_vector => de_ext_force_vector Function | |
| procedure (element_query) , public , pass :: get_dimensionality | |
| procedure , public :: get_dof_per_node => tnde_dof_per_node Function | |
| procedure , public :: get_node => tnde_get_node Function | |
| procedure , public :: get_node_count => tnde_get_node_count Function | |
| procedure , public :: get_node_natural_coordinates => de_get_node_natural_coordinates Function | |
| procedure , public :: jacobian => de_jacobian Function | |
| procedure , public :: mass_matrix => de_mass_matrix Function | |
| procedure , public :: shape_function_matrix => tnde_shape_function_matrix Function | |
| procedure , public :: stiffness_matrix => de_stiffness_matrix Function | |
| procedure , public :: strain => e_strain Function | |
| procedure , public :: strain_displacement_matrix => tnde_strain_disp_matrix Function | |
| procedure , public :: stress => e_stress Function |